1 Summary of achievements to-date
308,467 people reached, USD 9.4 million disbursed, 20230317
governorate | district | partners | communities | households | beneficiaries | total_usd | %_beneficiaries |
Aleppo | A'zaz | 3 | 3 | 895 | 4,475 | 134,250 | 1.45 |
Aleppo | Afrin | 6 | 50 | 15,993 | 79,850 | 2,398,950 | 25.89 |
Aleppo | Al Bab | 2 | 3 | 400 | 1,677 | 60,000 | 0.54 |
Aleppo | Jarablus | 3 | 1 | 400 | 2,005 | 60,000 | 0.65 |
Aleppo | Jebel Saman | 5 | 8 | 3,276 | 16,840 | 480,150 | 5.46 |
Idleb | Harim | 12 | 31 | 37,345 | 170,164 | 5,326,750 | 55.16 |
Idleb | Idleb | 6 | 7 | 4,973 | 25,392 | 726,480 | 8.23 |
Idleb | Jisr-Ash-Shugur | 4 | 8 | 1,564 | 8,064 | 204,870 | 2.61 |
Total | - | - | - | 64,846 | 308,467 | 9,391,450 | 100.00 |
2. Map of MPC beneficiaries and collective/reception centres
As of March 17 2023, a total of 308,467 persons or 64,846 families
have been reached by MPC interventions.
A total of USD 9,391,450 has been disbursed by 14 implementing
agencies across 22 sub-districts.
Only beneficiaries who have received at least USD 100/family/month
have been included. Additionally, current achievement reporting has yet
to include the collective sites, only information on communities, so it
is not clear to what extent needs have been met in these centres. This
will be corrected in revised 4W template.
Data on cash response extracted from FSL
earthquake tracker on March 17 2023. Data on collective centres
extracted from March 15 2023.
2.1 Geographic breakdown of beneficiaries

2.2 UNHCR site tracker – searchable table
3. Cash response actors
In the scatterplot below, each point is a single cash working group
partner. The x-axis indicates the number of beneficiaries reached per
agency and the y-axis indicates the number of communities (admin4)
reached.
From the scatterplot, we may split partners into two groups – those
with below 10,000 beneficiaries and those with more
3.1 Beneficiaries and geographic reach
3.3 USD disbursed by partner
USD disbursed and families reached by partner
partner_code | usd_total | families | usd_per_fam | %_usd_total |
CBR-004 | 2,451,750 | 16,345 | 150.00 | 26.11 |
CBR-006 | 1,365,000 | 9,100 | 150.00 | 14.53 |
CBR-044 | 1,178,200 | 8,980 | 131.20 | 12.55 |
CBR-032 | 1,116,450 | 7,443 | 150.00 | 11.89 |
CBR-013 | 994,800 | 6,702 | 148.43 | 10.59 |
CBR-031 | 435,000 | 2,900 | 150.00 | 4.63 |
CBR-038 | 360,000 | 2,400 | 150.00 | 3.83 |
CBR-035 | 312,300 | 3,123 | 100.00 | 3.33 |
CBR-042 | 301,200 | 2,008 | 150.00 | 3.21 |
CBR-005 | 271,800 | 1,812 | 150.00 | 2.89 |
CBR-008 | 218,400 | 1,456 | 150.00 | 2.33 |
CBR-040 | 150,000 | 1,000 | 150.00 | 1.60 |
CBR-037 | 139,050 | 927 | 150.00 | 1.48 |
CBR-041 | 97,500 | 650 | 150.00 | 1.04 |
LS0tDQp0aXRsZTogIk5vcnRod2VzdCBTeXJpYSBDYXNoIFdvcmtpbmcgR3JvdXAgcmVwb3J0IG9uIG11bHRpcHVycG9zZSBjYXNoIg0KZGF0ZTogICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICB0aGVtZTogcmVhZGFibGUNCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiBubw0KICAgIGNvbGxhcHNlZDogbm8NCmFsd2F5c19hbGxvd19odG1sOiB5ZXMNCi0tLQ0KDQpgYGB7Y3NzLCBlY2hvPUZBTFNFfQ0KDQojVE9DOjpiZWZvcmUgew0KICBjb250ZW50OiAiIjsNCiAgZGlzcGxheTogYmxvY2s7DQogIGhlaWdodDogNzBweDsNCiAgbWFyZ2luOiAyZW0gMjBweCA0MHB4IDIwcHg7DQogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiTldTLUNXRyBsb2dvLlBORyIpOw0KICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47DQogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlciBjZW50ZXI7DQogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7DQp9DQpgYGANCg0KYGBgez1odG1sfQ0KPHN0eWxlPg0KICAgIGJvZHkgLm1haW4tY29udGFpbmVyIHsNCiAgICAgICAgbWF4LXdpZHRoOiAxMjgwcHg7DQogICAgfQ0KPC9zdHlsZT4NCmBgYA0KDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgZmlnLndpZHRoPTksIG1lc3NhZ2UgPSBGQUxTRSwgd2FybmluZz1GQUxTRSkNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoc3RyaW5naSkNCmxpYnJhcnkocGFuZGVyKQ0KbGlicmFyeShqYW5pdG9yKQ0KbGlicmFyeShzY2FsZXMpDQpsaWJyYXJ5KG1hZ3JpdHRyKQ0KbGlicmFyeSh2aXJpZGlzKQ0KbGlicmFyeShwYXRjaHdvcmspDQpsaWJyYXJ5KERUKQ0KbGlicmFyeShzZikNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShmbGV4dGFibGUpDQpsaWJyYXJ5KGdncmFzdHIpDQpsaWJyYXJ5KGh0bWx3aWRnZXRzKQ0KDQp0aGVtZV9zZXQodGhlbWVfbGlnaHQoKSkNCg0KIyBkaXNhYmxpbmcgc2NpZW50aWZpYyBub3RhdGlvbg0Kb3B0aW9ucyhzY2lwZW4gPSAxMDApDQoNCiMgcGFuZGVyIHRhYmxlcyBhbGwgaW4gb25lIHJvdw0KcGFuZGVyT3B0aW9ucygndGFibGUuc3BsaXQudGFibGUnLCBJbmYpDQoNCiMgcGFuZGVyIHRob3VzYW5kcyBzZXBhcmF0b3INCnBhbmRlck9wdGlvbnMoImJpZy5tYXJrIiwgIiwiKQ0KDQojIHJlcGxhY2UgDQpvcHRzIDwtIG9wdGlvbnMoa25pdHIua2FibGUuTkEgPSAiIikNCg0KYCVvdXQlYCA8LSBOZWdhdGUoYCVpbiVgKQ0KDQojIGZ1bmN0aW9uIGZvciB0cmFuc3Bvc2luZyBkZg0KdHJhbnNwb3NlX2RmIDwtIGZ1bmN0aW9uKGRmKSB7DQogIHRfZGYgPC0gZGF0YS50YWJsZTo6dHJhbnNwb3NlKGRmKQ0KICBjb2xuYW1lcyh0X2RmKSA8LSByb3duYW1lcyhkZikNCiAgcm93bmFtZXModF9kZikgPC0gY29sbmFtZXMoZGYpDQogIHRfZGYgPC0gdF9kZiAlPiUNCiAgICB0aWJibGU6OnJvd25hbWVzX3RvX2NvbHVtbiguZGF0YSA9IC4pICU+JQ0KICAgIHRpYmJsZTo6YXNfdGliYmxlKC4pDQogIHJldHVybih0X2RmKQ0KfQ0KDQojIGZ1bmN0aW9uIGJlbmVmaWNpYXJ5IHN1bW1hcmllcw0Kc3VtX2JlbiA8LSBmdW5jdGlvbihkZiwgY29sdW1uX3Zhcil7DQogIA0KICBjb2x1bW5fdmFyIDwtIGVucXVvKGNvbHVtbl92YXIpDQogIA0KICBkZiAlPiUNCiAgICBncm91cF9ieSghIWNvbHVtbl92YXIpICU+JSAjIG11c3QgYWRkIGJhbmctYmFuZw0KICAgIHN1bW1hcmlzZShiZW5lZmljaWFyaWVzID0gc3VtKG5ld19iZW5lZmljaWFyaWVzLCBuYS5ybSA9IFRSVUUpKSAlPiUgDQogICAgYXJyYW5nZShkZXNjKGJlbmVmaWNpYXJpZXMpKQ0KICAgIA0KfQ0KDQojIGZ1bmN0aW9uIGJlbmVmaWNpYXJ5IHN1bW1hcmllcywgMiBncm91cGVkIHZhcmlhYmxlcw0Kc3VtX2JlbjIgPC0gZnVuY3Rpb24oZGYsIGNvbHVtbl92YXIxLCBjb2x1bW5fdmFyMil7DQogIA0KICBjb2x1bW5fdmFyMSA8LSBlbnF1byhjb2x1bW5fdmFyMSkNCiAgY29sdW1uX3ZhcjIgPC0gZW5xdW8oY29sdW1uX3ZhcjIpDQogIA0KICBkZiAlPiUNCiAgICBncm91cF9ieSghIWNvbHVtbl92YXIxLCAhIWNvbHVtbl92YXIyKSAlPiUgIyBtdXN0IGFkZCBiYW5nLWJhbmcNCiAgICBzdW1tYXJpc2UoYmVuZWZpY2lhcmllcyA9IHN1bShuZXdfYmVuZWZpY2lhcmllcywgbmEucm0gPSBUUlVFKSwgLmdyb3VwcyA9ICJkcm9wIikNCiAgICANCn0NCg0KIyBzY2FsaW5nIGZ1bmN0aW9ucyANCnJhbmdlMDEgPC0gZnVuY3Rpb24oeCl7KHgtbWluKHgpKS8obWF4KHgpLW1pbih4KSl9DQpyYW5nZV93bmEgPC0gZnVuY3Rpb24oeCl7KHgtbWluKHgsIG5hLnJtID0gVFJVRSkpLyhtYXgoeCwgbmEucm0gPSBUUlVFKS1taW4oeCwgbmEucm0gPSBUUlVFKSl9DQoNCiNtb2RlIGZ1bmN0aW9uIA0KbW9kZSA8LSBmdW5jdGlvbih4KSB7DQogIHV4IDwtIHVuaXF1ZSh4KQ0KICB1eFt3aGljaC5tYXgodGFidWxhdGUobWF0Y2goeCwgdXgpKSldDQp9DQoNCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGRldj0icG5nIikNCmBgYA0KDQpgYGB7ciBkYXRhfQ0KcGNvZGUzX3NoYXBlIDwtIA0KICBzdF9yZWFkKCIuL2RhdGEvc3lyX2FkbWJuZGFfdW5jc191bm9jaGFfMjAyMDEyMTcvc3lyX2FkbWJuZGFfYWRtM191bmNzX3Vub2NoYV8yMDIwMTIxNy5zaHAiLCANCiAgICAgICAgICBxdWlldCA9IFRSVUUpDQoNCmxvY2F0aW9ucyA8LSByZWFkX2V4Y2VsKCIuL2RhdGEvTG9jYXRpb25zLnhsc3giKSAlPiUgDQogIGNsZWFuX25hbWVzKCkNCg0KZnNsIDwtIHJlYWRfY3N2KCIuL2RhdGEvZm9yX3JlcG9ydC9mc2wuY3N2IikgJT4lIA0KICBtdXRhdGUocGFydG5lcl9jb2RlID0gaWZlbHNlKGlzLm5hKHBhcnRuZXJfY29kZSksICJ0ZW1wXzEiLCBwYXJ0bmVyX2NvZGUpKQ0KDQpzaXRlcyA8LSByZWFkX2NzdigiLi9kYXRhL2Zvcl9yZXBvcnQvc2l0ZXMuY3N2IikNCg0KcmVtb3ZlX3NpdGVzIDwtIHJlYWRfY3N2KCIuL2RhdGEvZm9yX3JlcG9ydC9zaXRlc19sb2NhdGlvbnNfZnNsLmNzdiIpICU+JQ0KICBmaWx0ZXIoIWlzLm5hKGxvbmdpdHVkZV94KSAmICFpcy5uYShsYXRpdHVkZV95KSkgJT4lIA0KICBzdF9hc19zZihjb29yZHMgPSBjKCJsb25naXR1ZGVfeCIsICJsYXRpdHVkZV95IiksIGNycyA9IDQzMjYpICU+JQ0KICBzdF90cmFuc2Zvcm0oc3RfY3JzKHBjb2RlM19zaGFwZSkpICU+JSANCiAgbXV0YXRlKGludGVyc2VjdGlvbiA9IGFzLmludGVnZXIoc3RfaW50ZXJzZWN0cyhnZW9tZXRyeSwgcGNvZGUzX3NoYXBlKSksIA0KICAgICAgICAgYXJlYSA9IGlmZWxzZShpcy5uYShpbnRlcnNlY3Rpb24pLCAiIiwgcGNvZGUzX3NoYXBlJEFETTNfUENPREVbaW50ZXJzZWN0aW9uXSkpICU+JQ0KICBmaWx0ZXIoaXMubmEoaW50ZXJzZWN0aW9uKSkgDQoNCnNpdGVzX2xvY2F0aW9uc19mc2wgPC0gcmVhZF9jc3YoIi4vZGF0YS9mb3JfcmVwb3J0L3NpdGVzX2xvY2F0aW9uc19mc2wuY3N2IikgJT4lIA0KICBhbnRpX2pvaW4ocmVtb3ZlX3NpdGVzLCBieSA9IGMoInNpdGVfbmFtZSIpKQ0KDQoNCg0KYGBgICANCg0KPGJyPjxicj48YnI+DQoNCiMgMSBTdW1tYXJ5IG9mIGFjaGlldmVtZW50cyB0by1kYXRlIA0KDQpgYGB7ciBzdW1tYXJ5IHRhYmxlfQ0KZnNsICU+JSANCiAgZmlsdGVyKGFjdGl2aXR5ID09ICJDYXNoIFJlc3BvbnNlIiAmIHBsYW5uZWRfaW1wbGVtZW50ZWQgPT0gIkltcGxlbWVudGVkIikgJT4lDQogIG11dGF0ZSh1c2RfdG90YWwgPSBmYW1pbGllcyAqIHF1YW50aXR5KSAlPiUgDQogIGdyb3VwX2J5KGdvdmVybm9yYXRlLCBkaXN0cmljdCkgJT4lIA0KICBzdW1tYXJpc2UocGFydG5lcnMgPSBuX2Rpc3RpbmN0KHBhcnRuZXJfY29kZSksIA0KICAgICAgICAgICAgY29tbXVuaXRpZXMgPSBuX2Rpc3RpbmN0KGFkbWluNHBjb2RlKSwgDQogICAgICAgICAgICBob3VzZWhvbGRzID0gc3VtKGZhbWlsaWVzLCBuYS5ybSA9IFRSVUUpLCANCiAgICAgICAgICAgIGJlbmVmaWNpYXJpZXMgPSBzdW0oYmVuZWZpY2lhcmllcywgbmEucm0gPSBUUlVFKSwgDQogICAgICAgICAgICB0b3RhbF91c2QgPSBzdW0odXNkX3RvdGFsLCBuYS5ybSA9IFRSVUUpKSAlPiUgDQogIHVuZ3JvdXAoKSAlPiUgDQogIG11dGF0ZShgJV9iZW5lZmljaWFyaWVzYCA9IA0KICAgICAgICAgICByb3VuZChiZW5lZmljaWFyaWVzIC8gc3VtKGJlbmVmaWNpYXJpZXMsIG5hLnJtID0gVFJVRSkgKiAxMDAsIGRpZ2l0cyA9IDIpKSAlPiUNCiAgYWRvcm5fdG90YWxzKCJyb3ciLCwsLCBob3VzZWhvbGRzLCBiZW5lZmljaWFyaWVzLCB0b3RhbF91c2QsIGAlX2JlbmVmaWNpYXJpZXNgKSAlPiUgDQogIG11dGF0ZShgJV9iZW5lZmljaWFyaWVzYCA9IGlmZWxzZShgJV9iZW5lZmljaWFyaWVzYCA+IDk5Ljk4LCAxMDAsIGAlX2JlbmVmaWNpYXJpZXNgKSkgJT4lIA0KICBmbGV4dGFibGUoKSAlPiUgDQogIHNldF9jYXB0aW9uKCIzMDgsNDY3IHBlb3BsZSByZWFjaGVkLCBVU0QgOS40IG1pbGxpb24gZGlzYnVyc2VkLCAyMDIzMDMxNyIpICU+JSANCiAgdGhlbWVfemVicmEoKQ0KICANCiAgDQpgYGANCg0KPGJyPjxicj48YnI+DQoNCiMgMi4gTWFwIG9mIE1QQyBiZW5lZmljaWFyaWVzIGFuZCBjb2xsZWN0aXZlL3JlY2VwdGlvbiBjZW50cmVzDQoNCkFzIG9mIGByIGZvcm1hdChTeXMudGltZSgpLCAiJUIgJWQgJVkiKWAsIGEgdG90YWwgb2YgYHIgZnNsICU+JSBmaWx0ZXIoYWN0aXZpdHkgPT0gIkNhc2ggUmVzcG9uc2UiICYgcGxhbm5lZF9pbXBsZW1lbnRlZCA9PSAiSW1wbGVtZW50ZWQiKSAlPiUge3N1bSguJGJlbmVmaWNpYXJpZXMpfSAlPiUgZm9ybWF0KGJpZy5tYXJrID0gIiwiKWAgcGVyc29ucyBvciBgciBmc2wgJT4lIGZpbHRlcihhY3Rpdml0eSA9PSAiQ2FzaCBSZXNwb25zZSIgJiBwbGFubmVkX2ltcGxlbWVudGVkID09ICJJbXBsZW1lbnRlZCIpICU+JSB7c3VtKC4kZmFtaWxpZXMpfSAlPiUgZm9ybWF0KGJpZy5tYXJrID0gIiwiKWAgZmFtaWxpZXMgaGF2ZSBiZWVuIHJlYWNoZWQgYnkgTVBDIGludGVydmVudGlvbnMuIA0KDQpBIHRvdGFsIG9mIFVTRCBgciBmc2wgJT4lIGZpbHRlcihhY3Rpdml0eSA9PSAiQ2FzaCBSZXNwb25zZSIgJiBwbGFubmVkX2ltcGxlbWVudGVkID09ICJJbXBsZW1lbnRlZCIpICU+JSBtdXRhdGUodXNkX3RvdGFsID0gZmFtaWxpZXMgKiBxdWFudGl0eSkgJT4lICB7c3VtKC4kdXNkX3RvdGFsKX0gJT4lIGZvcm1hdChiaWcubWFyayA9ICIsIilgIGhhcyBiZWVuIGRpc2J1cnNlZCBieSBgciBmc2wgJT4lIGZpbHRlcihhY3Rpdml0eSA9PSAiQ2FzaCBSZXNwb25zZSIgJiBwbGFubmVkX2ltcGxlbWVudGVkID09ICJJbXBsZW1lbnRlZCIpICU+JSBzdW1tYXJpc2Uobl9kaXN0aW5jdChwYXJ0bmVyX2NvZGUpKSAlPiUgcHVsbCgpYCBpbXBsZW1lbnRpbmcgYWdlbmNpZXMgYWNyb3NzIGByIGZzbCAlPiUgZmlsdGVyKGFjdGl2aXR5ID09ICJDYXNoIFJlc3BvbnNlIiAmIHBsYW5uZWRfaW1wbGVtZW50ZWQgPT0gIkltcGxlbWVudGVkIikgJT4lIHN1bW1hcmlzZShuX2Rpc3RpbmN0KGFkbWluM3Bjb2RlKSkgJT4lIHB1bGwoKWAgc3ViLWRpc3RyaWN0cy4gDQoNCk9ubHkgYmVuZWZpY2lhcmllcyB3aG8gaGF2ZSByZWNlaXZlZCBhdCBsZWFzdCBVU0QgMTAwL2ZhbWlseS9tb250aCBoYXZlIGJlZW4gaW5jbHVkZWQuIEFkZGl0aW9uYWxseSwgY3VycmVudCBhY2hpZXZlbWVudCByZXBvcnRpbmcgaGFzIHlldCB0byBpbmNsdWRlIHRoZSBjb2xsZWN0aXZlIHNpdGVzLCBvbmx5IGluZm9ybWF0aW9uIG9uIGNvbW11bml0aWVzLCBzbyBpdCBpcyBub3QgY2xlYXIgdG8gd2hhdCBleHRlbnQgbmVlZHMgaGF2ZSBiZWVuIG1ldCBpbiB0aGVzZSBjZW50cmVzLiBUaGlzIHdpbGwgYmUgY29ycmVjdGVkIGluIHJldmlzZWQgNFcgdGVtcGxhdGUuIA0KDQoNCjxicj4NCg0KDQpgYGB7ciBwbG90bHktc2l0ZXN9DQoNCnNpdGVfbWFwIDwtIHNpdGVzX2xvY2F0aW9uc19mc2wgJT4lIA0KICBsZWZ0X2pvaW4obG9jYXRpb25zICU+JSBzZWxlY3QoYWRtaW4zcGNvZGUsIGFkbWluNHBjb2RlKSwgDQogICAgICAgICAgICBieSA9ICJhZG1pbjRwY29kZSIpICU+JQ0KICByaWdodF9qb2luKHBjb2RlM19zaGFwZSwgDQogICAgICAgICAgICAgYnkgPSBjKCJhZG1pbjNwY29kZSIgPSAiQURNM19QQ09ERSIpKSAlPiUgDQogIGZpbHRlcihBRE0xX1BDT0RFICVpbiUgYygiU1kwMiIsICJTWTA3IikpICU+JSANCiAgc3RfYXNfc2YoKSAlPiUgDQogIG11dGF0ZSh0eXBlID0gZmN0X3JlbGV2ZWwodHlwZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiUkMvSURQIiwgIkJlbmVmaWNpYXJpZXMiKSkpICU+JSANCiAgZ2dwbG90KCkgKyANCiAgZ2VvbV9zZihzaXplID0gMC4xLCBjb2xvdXIgPSAiZ3JleTcwIikgKw0KICBnZW9tX3BvaW50KGFlcyhzaXplID0gcGVyc29ucywgDQogICAgICAgICAgICAgICAgICBjb2xvdXIgPSB0eXBlLA0KICAgICAgICAgICAgICAgICAgeCA9IGxvbmdpdHVkZV94LCB5ID0gbGF0aXR1ZGVfeSwNCiAgICAgICAgICAgICAgICAgIHRleHQgPSBwYXN0ZTAoInN1Yl9kaXN0cmljdDogIiwgc3ViX2Rpc3RyaWN0LCAiXG4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l0ZTogIiwgc2l0ZV9uYW1lLCAiXG4iLCAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwZXJzb25zOiAiLCBwZXJzb25zLCAiXG4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGU6ICIsIHR5cGUpKSwgDQogICAgICAgICAgICAgc2hhcGUgPSAyMSwgc3Ryb2tlID0gLjUNCiAgICAgICAgICAgICAjIEFkanVzdGluZyBhbHBoYSB3b24ndCBhZmZlY3QgYSBwbG90bHkNCiAgICAgICAgICAgICApICsNCiAgc2NhbGVfc2l6ZV9jb250aW51b3VzKGxhYmVscyA9IGNvbW1hKSArDQogIHRoZW1lX3ZvaWQoKSArIA0KICB0aGVtZShwbG90LmJhY2tncm91bmQgPSBlbGVtZW50X3JlY3QoZmlsbCA9ICJ3aGl0ZSIsIGNvbG91ciA9IE5BKSwgDQogICAgICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSksIA0KICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsNCiAgbGFicyh0aXRsZSA9ICJDb2xsZWN0aXZlL3JlY2VwdGlvbiBjZW50cmVzIGFuZCBNUEMgYmVuZWZpY2lhcmllcyIsIA0KICAgICAgIHN1YnRpdGxlID0gIklEUHMgaW4gcmVkLCBiZW5lZmljaWFyaWVzIGluIGJsdWUsIHNpemUgc2hvd3MgbnVtYmVyIG9mIHBlcnNvbnMiKQ0KDQpnZ3Bsb3RseShzaXRlX21hcCwgdG9vbHRpcCA9IGMoInRleHQiKSkgJT4lIA0KICBwbG90bHk6OnN0eWxlKGhvdmVyb24gPSAicG9pbnQiKSAlPiUgDQogIGxheW91dCh0aXRsZSA9IGxpc3QodGV4dCA9IHBhc3RlMCgiQ29sbGVjdGl2ZSBjZW50cmVzIGFuZCBjYXNoIHJlc3BvbnNlIGJlbmVmaWNpYXJpZXMiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8YnI+IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHN1cD4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJRFBzIGluIHJlZCwgYmVuZWZpY2lhcmllcyBpbiBibHVlLCBzaXplIHNob3dzIG51bWJlciBvZiBwZXJzb25zOyBjbGljayBhbmQgZHJhZyB0byB6b29tOyBtb3VzZSBvdmVyIGZvciBkZXRhaWxzIikpKSANCg0KIyBXaWxsIHRoaXMgd29yaz8gDQojICU+JSBwYXJ0aWFsX2J1bmRsZSgpDQpgYGANCg0KDQpEYXRhIG9uIGNhc2ggcmVzcG9uc2UgZXh0cmFjdGVkIGZyb20gW0ZTTCBlYXJ0aHF1YWtlIHRyYWNrZXJdKGh0dHBzOi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFLR3F0LTNZRGgyazhxTkNrc09KQW5kUlBPNTZHcTZwR3M2ZXNFUXRJRkl3L2VkaXQjZ2lkPTE4OTA5ODExMTUpIG9uIGByIGZvcm1hdChTeXMudGltZSgpLCAiJUIgJWQgJVkiKWAuIERhdGEgb24gY29sbGVjdGl2ZSBjZW50cmVzIGV4dHJhY3RlZCBmcm9tIE1hcmNoIDE1IDIwMjMuIA0KDQo8YnI+PGJyPg0KDQoNCiMjIyAyLjEgR2VvZ3JhcGhpYyBicmVha2Rvd24gb2YgYmVuZWZpY2lhcmllcw0KDQpgYGB7cn0NCmZzbCAlPiUgDQogIGZpbHRlcihhY3Rpdml0eSA9PSAiQ2FzaCBSZXNwb25zZSIgJiBwbGFubmVkX2ltcGxlbWVudGVkID09ICJJbXBsZW1lbnRlZCIpICU+JSANCiAgbXV0YXRlKGdvdmVybm9yYXRlID0gaWZlbHNlKGdvdmVybm9yYXRlID09ICJpZGxlYiIsICJJZGxlYiIsIGdvdmVybm9yYXRlKSwNCiAgICAgICAgIGRpc3RyaWN0ID0gaWZlbHNlKGRpc3RyaWN0ID09ICJpZGxlYiIsICJJZGxlYiIsIGRpc3RyaWN0KSkgJT4lIA0KICBncm91cF9ieShnb3Zlcm5vcmF0ZSwgZGlzdHJpY3QpICU+JSANCiAgc3VtbWFyaXNlKGJlbmVmaWNpYXJpZXMgPSBzdW0oYmVuZWZpY2lhcmllcywgbmEucm0gPSBUUlVFKSkgJT4lIA0KICBtdXRhdGUoZGlzdHJpY3QgPSBmY3RfcmVvcmRlcihkaXN0cmljdCwgYmVuZWZpY2lhcmllcyksIA0KICAgICAgICAgZ292ZXJub3JhdGUgPSBmY3RfcmVsZXZlbChnb3Zlcm5vcmF0ZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMoIklkbGliIiwgIkFsZXBwbyIpKSkgJT4lIA0KICBnZ3Bsb3QoYWVzKHggPSBiZW5lZmljaWFyaWVzLCB5ID0gZGlzdHJpY3QpKSArIA0KICBnZW9tX2NvbChhZXMoZmlsbCA9IGdvdmVybm9yYXRlKSkgKyANCiAgZ2VvbV90ZXh0KGFlcyhsYWJlbCA9IGNvbW1hKGJlbmVmaWNpYXJpZXMpKSwgDQogICAgICAgICAgICBoanVzdCA9ICJpbndhcmQiKSArIA0KICBzY2FsZV9maWxsX3ZpcmlkaXNfZChiZWdpbiA9IC4zKSArIA0KICBsYWJzKHRpdGxlID0gIk1QQyBiZW5lZmljaWFyaWVzIGJ5IGRpc3RyaWN0IiwgDQogICAgICAgc3VidGl0bGUgPSAiYXMgb2YgMTUgTWFyY2ggMjAyMyIpICsgDQogIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPSBjb21tYSkNCmBgYA0KDQo8YnI+PGJyPg0KDQojIyMgMi4yIFVOSENSIHNpdGUgdHJhY2tlciAtLSBzZWFyY2hhYmxlIHRhYmxlDQoNCmBgYHtyIGR0fQ0Kc2l0ZXMgJT4lIA0KICBzZWxlY3QoZ292ZXJub3JhdGUsIA0KICAgICAgICAgZGlzdHJpY3QsIA0KICAgICAgICAgc3ViX2Rpc3RyaWN0LCANCiAgICAgICAgIGNvbW11bml0eSwgDQogICAgICAgICBzaXRlX25hbWUsIA0KICAgICAgICAgbG9uZ2l0dWRlX3gsDQogICAgICAgICBsYXRpdHVkZV95LCANCiAgICAgICAgIGZhbWlsaWVzLCANCiAgICAgICAgIGluZGl2aWR1YWxzLCANCiAgICAgICAgIGZvY2FsX3BvaW50ID0gb3JnYW5pemF0aW9uX25hbWUsIA0KICAgICAgICAgZm9jYWxfY29udGFjdCA9IHBob25lKSAlPiUgDQogIGRhdGF0YWJsZShvcHRpb25zID0gbGlzdChwYWdlTGVuZ3RoID0gMTAsIHNjcm9sbFggPSBUUlVFKSwgDQogICAgICAgICAgICBmaWx0ZXIgPSBsaXN0KHBvc2l0aW9uID0gInRvcCIsIGNsZWFyID0gRkFMU0UpLA0KICAgICAgICAgICAgY2FwdGlvbiA9IGh0bWx0b29sczo6dGFncyRjYXB0aW9uKHN0eWxlID0gJ2NhcHRpb24tc2lkZTogdG9wOyANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgZm9udC1zaXplOjEyMCUgOycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVmZXJlbmNlIHRhYmxlIC0tIENvbGxlY3RpdmUgc2l0ZXMsIG1haW50YWluZWQgYnkgVU5IQ1IiKSkgJT4lIA0KICBmb3JtYXRTdHlsZSgwLCB0YXJnZXQgPSAicm93IiwgbGluZUhlaWdodCA9ICI4MCUiLCBmb250U2l6ZSA9ICI4MCUiKQ0KICANCmBgYA0KDQoNCjxicj48YnI+PGJyPg0KDQoNCiMgMy4gQ2FzaCByZXNwb25zZSBhY3RvcnMNCg0KSW4gdGhlIHNjYXR0ZXJwbG90IGJlbG93LCBlYWNoIHBvaW50IGlzIGEgc2luZ2xlIGNhc2ggd29ya2luZyBncm91cCBwYXJ0bmVyLiBUaGUgeC1heGlzIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGJlbmVmaWNpYXJpZXMgcmVhY2hlZCBwZXIgYWdlbmN5IGFuZCB0aGUgeS1heGlzIGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIGNvbW11bml0aWVzIChhZG1pbjQpIHJlYWNoZWQuIA0KDQpGcm9tIHRoZSBzY2F0dGVycGxvdCwgd2UgbWF5IHNwbGl0IHBhcnRuZXJzIGludG8gdHdvIGdyb3VwcyAtLSB0aG9zZSB3aXRoIGJlbG93IDEwLDAwMCBiZW5lZmljaWFyaWVzIGFuZCB0aG9zZSB3aXRoIG1vcmUgDQoNCmBgYHtyIHRvdGFscywgZXZhbCA9IEZBTFNFfQ0KDQpmc2wgJT4lIA0KICBmaWx0ZXIoYWN0aXZpdHkgPT0gIkNhc2ggUmVzcG9uc2UiICYgcGxhbm5lZF9pbXBsZW1lbnRlZCA9PSAiSW1wbGVtZW50ZWQiKSAlPiUgDQogIG11dGF0ZSh1c2RfdG90YWwgPSBmYW1pbGllcyAqIHF1YW50aXR5KSAlPiUgDQogIHN1bW1hcmlzZShiZW5lZmljaWFyaWVzID0gc3VtKGJlbmVmaWNpYXJpZXMsIG5hLnJtID0gVFJVRSksIA0KICAgICAgICAgICAgdXNkX3RvdGFsID0gc3VtKHVzZF90b3RhbCwgbmEucm0gPSBUUlVFKSkNCg0KYGBgDQoNCg0KPGJyPjxicj4NCg0KIyMjIDMuMSBCZW5lZmljaWFyaWVzIGFuZCBnZW9ncmFwaGljIHJlYWNoDQoNCmBgYHtyIHBhcnRuZXItc2NhdHRlcn0NCnBhcnRuZXJfc2NhdHRlciA8LSBmc2wgJT4lIA0KICAgZmlsdGVyKGFjdGl2aXR5ID09ICJDYXNoIFJlc3BvbnNlIiAmIHBsYW5uZWRfaW1wbGVtZW50ZWQgPT0gIkltcGxlbWVudGVkIikgJT4lIA0KICBncm91cF9ieShwYXJ0bmVyX2NvZGUsIA0KICAgICAgICAgICBhZG1pbjJwY29kZSwgDQogICAgICAgICAgIGFkbWluNHBjb2RlKSAlPiUgDQogIHNsaWNlKHdoaWNoLm1heChiZW5lZmljaWFyaWVzKSkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBncm91cF9ieShwYXJ0bmVyX2NvZGUpICU+JSANCiAgc3VtbWFyaXNlKGJlbmVmaWNpYXJpZXMgPSBzdW0oYmVuZWZpY2lhcmllcywgbmEucm0gPSBUUlVFKSwgDQogICAgICAgICAgICBjb21tdW5pdGllcyA9IG5fZGlzdGluY3QoYWRtaW40cGNvZGUpKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IGJlbmVmaWNpYXJpZXMsIHkgPSBjb21tdW5pdGllcykpICsNCiAgZ2VvbV9wb2ludChhZXMoc2l6ZSA9IGJlbmVmaWNpYXJpZXMsIA0KICAgICAgICAgICAgICAgICB0ZXh0ID0gcGFzdGUwKHBhcnRuZXJfY29kZSwgIlxuIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlbmVmaWNpYXJpZXM6ICIsIGZvcm1hdChiZW5lZmljaWFyaWVzLCBiaWcubWFyayA9ICIsIiksICJcbiIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tdW5pdGllczogIiwgY29tbXVuaXRpZXMpKSkgKyANCiAgc2NhbGVfeF9sb2cxMChsYWJlbHMgPSBjb21tYSkgKyANCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArIA0KICBsYWJzKHggPSAiQmVuZWZpY2lhcmllcyByZWFjaGVkIiwgDQogICAgICAgeSA9ICJDb21tdW5pdGllcyAoYWRtaW40KSByZWFjaGVkIiwgDQogICAgICAgdGl0bGUgPSAiSW1wbGVtZW50aW5nIHBhcnRuZXJzIC0tIGJlbmVmaWNpYXJpZXMgYW5kIGNvbW11bml0aWVzIHJlYWNoZWQiKQ0KDQpnZ3Bsb3RseShwYXJ0bmVyX3NjYXR0ZXIsIHRvb2x0aXAgPSBjKCJ0ZXh0IikpICU+JSANCiAgbGF5b3V0KHNob3dsZWdlbmQgPSBUUlVFLCBsZWdlbmQgPSBsaXN0KGZvbnQgPSAobGlzdChzaXplID0gNikpKSkgJT4lIA0KICBwbG90bHk6OnN0eWxlKGhvdmVyb24gPSAicG9pbnQiKSAlPiUgDQogIGxheW91dCh0aXRsZSA9IGxpc3QodGV4dCA9IHBhc3RlMCgiQmVuZWZpY2lhcmllcyBhbmQgY29tbXVuaXRpZXMgcmVhY2hlZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPGJyPiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPHN1cD4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhc2ggcmVzcG9uc2UgaW1wbGVtZW50aW5nIHBhcnRuZXJzIiwiPC9zdXA+IikpKQ0KDQoNCmBgYA0KDQo8YnI+PGJyPg0KDQojIyMgMy4yIFJlYWNoIGFuZCBmb290cHJpbnQgb2YgY2FzaCByZXNwb25zZSBhY3RvcnMNCg0KYGBge3J9DQpzdGFja190ZXh0IDwtIGZzbCAlPiUgDQogIGZpbHRlcihhY3Rpdml0eSA9PSAiQ2FzaCBSZXNwb25zZSIgJiBwbGFubmVkX2ltcGxlbWVudGVkID09ICJJbXBsZW1lbnRlZCIpICU+JSANCiAgZ3JvdXBfYnkoZGlzdHJpY3QpICU+JSANCiAgc3VtbWFyaXNlKHRvdGFsID0gc3VtKGJlbmVmaWNpYXJpZXMsIG5hLnJtID0gVFJVRSkpICU+JSANCiAgbXV0YXRlKGRpc3RyaWN0ID0gZmN0X3JlbGV2ZWwoZGlzdHJpY3QsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjKCJBZnJpbiIsICJBbCBCYWIiLCAiQSd6YXoiLCAiSmFyYWJsdXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKZWJlbCBTYW1hbiIsICJIYXJpbSIsICJJZGxlYiIsICJKaXNyLUFzaC1TaHVndXIiKSkpDQoNCnN0YWNrIDwtIGZzbCAlPiUgDQogIGZpbHRlcihhY3Rpdml0eSA9PSAiQ2FzaCBSZXNwb25zZSIgJiBwbGFubmVkX2ltcGxlbWVudGVkID09ICJJbXBsZW1lbnRlZCIpICU+JSANCiAgZ3JvdXBfYnkoZGlzdHJpY3QsIHBhcnRuZXJfY29kZSkgJT4lIA0KICBzdW1tYXJpc2UoYmVuZWZpY2lhcmllcyA9IHN1bShiZW5lZmljaWFyaWVzLCBuYS5ybSA9IFRSVUUpKSAlPiUgDQogIG11dGF0ZShkaXN0cmljdCA9IGZjdF9yZWxldmVsKGRpc3RyaWN0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYygiQWZyaW4iLCAiQWwgQmFiIiwgIkEnemF6IiwgIkphcmFibHVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSmViZWwgU2FtYW4iLCAiSGFyaW0iLCAiSWRsZWIiLCAiSmlzci1Bc2gtU2h1Z3VyIikpKSAlPiUgDQogIGdncGxvdChhZXMoeCA9IGRpc3RyaWN0LCANCiAgICAgICAgICAgICB5ID0gYmVuZWZpY2lhcmllcykpICsNCiAgZ2VvbV9jb2woYWVzKGZpbGwgPSBwYXJ0bmVyX2NvZGUpKSArIA0KICBnZW9tX3RleHQoZGF0YSA9IHN0YWNrX3RleHQsIA0KICAgICAgICAgICAgYWVzKHkgPSB0b3RhbCArIDYwMDAsIA0KICAgICAgICAgICAgICAgIGxhYmVsID0gc2NhbGVzOjpjb21tYSh0b3RhbCkpKSArIA0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gY29tbWEpICsgDQogIGxhYnMoeCA9ICIiLCANCiAgICAgICB5ID0gIkJlbmVmaWNpYXJpZXMiLCANCiAgICAgICB0aXRsZSA9ICJQYXJ0bmVyIGFjaGlldmVtZW50cyBieSBkaXN0cmljdCwgMjAyMzAzMTciKSArIA0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQoNCmdncGxvdGx5KHN0YWNrLCB0b29sdGlwID0gYygiZmlsbCIsICJ4IiwgInkiKSkgJT4lIA0KICBsYXlvdXQodGl0bGUgPSBsaXN0KHRleHQgPSBwYXN0ZTAoIlBhcnRuZXIgYWNoaWV2ZW1lbnRzIGJ5IGRpc3RyaWN0LCAyMDIzMDMxNyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxicj4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8c3VwPiIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vdXNlIG92ZXIgZm9yIGRldGFpbHMiKSkpDQoNCmBgYA0KDQo8YnI+DQoNClVTRCBgciBmc2wgJT4lIGZpbHRlcihhY3Rpdml0eSA9PSAiQ2FzaCBSZXNwb25zZSIgJiBwbGFubmVkX2ltcGxlbWVudGVkID09ICJJbXBsZW1lbnRlZCIpICU+JSBtdXRhdGUodXNkX3RvdGFsID0gZmFtaWxpZXMgKiBxdWFudGl0eSkgJT4lIHtzdW0oLiR1c2RfdG90YWwpfSAlPiUgZm9ybWF0KGJpZy5tYXJrID0gIiwiKWAgaGFzIGJlZW4gZGlzdHJpYnV0ZWQgYWNyb3NzIGByIGZzbCAlPiUgZmlsdGVyKGFjdGl2aXR5ID09ICJDYXNoIFJlc3BvbnNlIiAmIHBsYW5uZWRfaW1wbGVtZW50ZWQgPT0gIkltcGxlbWVudGVkIikgJT4lIHtuX2Rpc3RpbmN0KC4kYWRtaW40cGNvZGUpfWAgY29tbXVuaXRpZXMgYW5kIGByIGZzbCAlPiUgZmlsdGVyKGFjdGl2aXR5ID09ICJDYXNoIFJlc3BvbnNlIiAmIHBsYW5uZWRfaW1wbGVtZW50ZWQgPT0gIkltcGxlbWVudGVkIikgJT4lIHtuX2Rpc3RpbmN0KC4kYWRtaW4zcGNvZGUpfWAgc3ViLWRpc3RyaWN0cyBpbiBOVyBTeXJpYS4gDQo8YnI+DQoNCmBgYHtyfQ0KZnNsICU+JSANCiAgZmlsdGVyKGFjdGl2aXR5ID09ICJDYXNoIFJlc3BvbnNlIiAmIHBsYW5uZWRfaW1wbGVtZW50ZWQgPT0gIkltcGxlbWVudGVkIikgJT4lIA0KICBncm91cF9ieShwYXJ0bmVyX2NvZGUsIA0KICAgICAgICAgICBhZG1pbjJwY29kZSwgDQogICAgICAgICAgIGFkbWluNHBjb2RlKSAlPiUgDQogIHNsaWNlKHdoaWNoLm1heChiZW5lZmljaWFyaWVzKSkgJT4lIA0KICB1bmdyb3VwKCkgJT4lIA0KICBncm91cF9ieShwYXJ0bmVyX2NvZGUpICU+JSANCiAgc3VtbWFyaXNlKGJlbmVmaWNpYXJpZXMgPSBzdW0oYmVuZWZpY2lhcmllcywgbmEucm0gPSBUUlVFKSwgDQogICAgICAgICAgICBkaXN0cmljdHMgPSBuX2Rpc3RpbmN0KGFkbWluMnBjb2RlKSwgDQogICAgICAgICAgICBjb21tdW5pdGllcyA9IG5fZGlzdGluY3QoYWRtaW40cGNvZGUpKSAlPiUgDQogIGFycmFuZ2UoZGVzYyhiZW5lZmljaWFyaWVzKSkgJT4lIA0KICBmbGV4dGFibGUoKSAlPiUgDQogIHNldF9jYXB0aW9uKCJSZWFjaCBhbmQgZm9vdHByaW50IG9mIGNhc2ggcmVzcG9uc2UgYWN0b3JzIikgJT4lIA0KICB0aGVtZV96ZWJyYSgpICU+JSANCiAgc2V0X3RhYmxlX3Byb3BlcnRpZXMobGF5b3V0ID0gImF1dG9maXQiLCB3aWR0aCA9IC44KSAlPiUgDQogIGZvb3Rub3RlKGFzX3BhcmFncmFwaCgiT25seSBwYXJ0bmVycyB3aG8gcHJvdmlkZWQgbW9yZSB0aGFuIFVTRCAxMDAvZmFtaWx5L21vbnRoIiksIA0KICAgICAgICAgICBpID0gMSwgaiA9IDEsIHBhcnQgPSAiaGVhZGVyIikNCiAgDQpgYGANCg0KDQoNCjxicj48YnI+DQoNCg0KDQoNCiMjIyAzLjMgVVNEIGRpc2J1cnNlZCBieSBwYXJ0bmVyDQoNCg0KYGBge3J9DQpmc2wgJT4lIA0KICBmaWx0ZXIoYWN0aXZpdHkgPT0gIkNhc2ggUmVzcG9uc2UiICYgcGxhbm5lZF9pbXBsZW1lbnRlZCA9PSAiSW1wbGVtZW50ZWQiKSAlPiUgDQogIG11dGF0ZSh1c2RfdG90YWwgPSBmYW1pbGllcyAqIHF1YW50aXR5KSAlPiUgDQogIGdyb3VwX2J5KHBhcnRuZXJfY29kZSkgJT4lIA0KICBzdW1tYXJpc2UodXNkX3RvdGFsID0gc3VtKHVzZF90b3RhbCwgbmEucm0gPSBUUlVFKSwgDQogICAgICAgICAgICBmYW1pbGllcyA9IHN1bShmYW1pbGllcywgbmEucm0gPSBUUlVFKSkgJT4lIA0KICBtdXRhdGUodXNkX3Blcl9mYW0gPSByb3VuZCh1c2RfdG90YWwgLyBmYW1pbGllcywgZGlnaXRzID0gMiksIA0KICAgICAgICAgYCVfdXNkX3RvdGFsYCA9IHJvdW5kKHVzZF90b3RhbCAvIHN1bSh1c2RfdG90YWwpICogMTAwLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnaXRzID0gMikpICU+JQ0KICBhcnJhbmdlKGRlc2ModXNkX3RvdGFsKSkgJT4lIA0KICBmbGV4dGFibGUoKSAlPiUgDQogIHNldF9jYXB0aW9uKCJVU0QgZGlzYnVyc2VkIGFuZCBmYW1pbGllcyByZWFjaGVkIGJ5IHBhcnRuZXIiKSAlPiUgDQogIHRoZW1lX3plYnJhKCkgJT4lIA0KICBmbGV4dGFibGU6OnNldF90YWJsZV9wcm9wZXJ0aWVzKGxheW91dCA9ICJhdXRvZml0Iiwgd2lkdGggPSAuOCkNCmBgYA0KDQo8YnI+DQoNCg0KDQoNCg0KDQo=